home *** CD-ROM | disk | FTP | other *** search
/ Ahoy 1988 January / Ahoy_Magazine_88-01_1988_Double_L.d64 / Designs C-64 (.txt) < prev    next >
Commodore BASIC  |  2022-10-26  |  2KB  |  69 lines

  1. 1 rem ===============================
  2. 2 rem     iterative designs 64
  3. 3 rem         c-64 version
  4. 4 rem       rupert report #49
  5. 5 rem
  6. 9 rem ======  for c-64 only!  =======
  7. 10 gosub 1000 :rem initialize graphics
  8. 30 for x=0 to 319
  9. 40 s=1+tan(0.005*x)
  10. 50 for y=0 to 199 step s
  11. 60 gosub 2000  :rem set pixel at x,y
  12. 70 next y
  13. 80 next x
  14. 90 get a$ : if a$="" then 90
  15. 100 gosub 3000
  16. 110 end
  17. 950 rem ********************************
  18. 960 rem
  19. 970 rem >>> initialize bit map mode <<<
  20. 980 rem
  21. 990 rem  set & reset bit functions
  22. 1000 def fnsb(n)=peek(mm) or 2^n
  23. 1010 def fnrb(n)=peek(mm) and (255-2^n)
  24. 1020 vv=53248 :rem vic-ii register 0
  25. 1030 :rem >>> put bit map at 8192 <<<         (set bit 3 of vic register 24)
  26. 1040 mm=vv+24 : poke mm,fnsb(3)
  27. 1050 :rem >>> select bit map mode <<<         (set bit 5 of vic register 17)
  28. 1060 mm=vv+17 : poke mm,fnsb(5)
  29. 1070 base=8192 :rem start bit map memory
  30. 1080 :rem >>> clear bit map <<<
  31. 1090 gosub 4000
  32. 1100 :rem > select colors c1 and c0   <
  33. 1110 c1=1 : c0=0 : cc=16*c1 + c0
  34. 1120 :rem fill screen memory with color
  35. 1130 for mm=1024 to 2023:poke mm,cc:next
  36. 1140 return
  37. 1150 :
  38. 1970 rem ==============================
  39. 1980 rem > turn on pixel at (x,y) <<<
  40. 1990 rem ==============================
  41. 2000 bit=7-(x and 7)
  42. 2010 mm=base+320*int(y/8)+8*int(x/8)+(y and 7)
  43. 2020 poke mm,fnsb(bit)
  44. 2030 return
  45. 2040 :
  46. 2970 rem ==========================
  47. 2980 rem >>> reset bit map mode <<<
  48. 2990 rem ==========================
  49. 3000 mm=vv+17 : poke mm,fnrb(5)
  50. 3010 rem  restore screen memory base
  51. 3020 mm=vv+24 : poke mm,fnrb(3)
  52. 3030 return
  53. 3960 :
  54. 3970 ============================
  55. 3980 >>> clear bit map screen <<<
  56. 3990 ============================
  57. 4000 for m=828 to 828+43
  58. 4010 read b : poke m,b
  59. 4020 ck=ck+b
  60. 4030 next
  61. 4040 if ck<>5133 then print "data error in lines 4060 - 4110" : stop
  62. 4050 sys 828: return
  63. 4060 data 76,68,3,0,32,31,64,0
  64. 4070 data 173,63,3,133,251,173,64,3
  65. 4080 data 133,252,174,65,3,160,0,173
  66. 4090 data 67,3,136,145,251,208,251,230
  67. 4100 data 252,202,48,7,208,244,172,66
  68. 4110 data 3,208,239,96
  69.